home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / u_man / cat1 / lex.z / lex
Text File  |  1998-10-20  |  13KB  |  199 lines

  1.  
  2.  
  3.  
  4. lllleeeexxxx((((1111))))                                                                  lllleeeexxxx((((1111))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      _llll_eeee_xxxx - generate programs for simple lexical tasks
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      _llll_eeee_xxxx [_----_cccc_tttt_vvvv_nnnn _----_VVVV _----_QQQQ_[[[[_yyyy_||||_nnnn_]]]]_]]]] _[[[[_f_i_l_e_]]]]
  13.  
  14. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  15.      _NNNN_OOOO_TTTT_EEEE_:::: When the environment variable ______XXXX_PPPP_GGGG is a value greater than 0
  16.      (zero), _llll_eeee_xxxx execs the POSIX compliant _////_uuuu_ssss_rrrr_////_bbbb_iiii_nnnn_////_ffff_llll_eeee_xxxx.
  17.  
  18.      The _llll_eeee_xxxx command generates programs to be used in simple lexical analysis
  19.      of text.  The input _f_i_l_es (standard input default) contain strings and
  20.      expressions to be searched for and C text to be executed when these
  21.      strings are found.  _llll_eeee_xxxx processes supplementary code set characters in
  22.      program comments and strings, and single-byte supplementary code set
  23.      characters in tokens, according to the locale specified in the _LLLL_CCCC______CCCC_TTTT_YYYY_PPPP_EEEE
  24.      environment variable [see _LLLL_AAAA_NNNN_GGGG on _eeee_nnnn_vvvv_iiii_rrrr_oooo_nnnn(5)].
  25.  
  26.      _llll_eeee_xxxx generates a file named _llll_eeee_xxxx_...._yyyy_yyyy_...._cccc.  When _llll_eeee_xxxx_...._yyyy_yyyy_...._cccc is compiled and
  27.      linked with the lex library (_////_uuuu_ssss_rrrr_////_llll_iiii_bbbb_////_llll_iiii_bbbb_llll_...._aaaa), it copies the input to the
  28.      output except when a string specified in the file is found.  When a
  29.      specified string is found, then the corresponding program text is
  30.      executed.  The actual string matched is left in _yyyy_yyyy_tttt_eeee_xxxx_tttt, an external
  31.      character array.  Matching is done in order of the patterns in the _f_i_l_e.
  32.      The patterns may contain square brackets to indicate character classes,
  33.      as in _[[[[_aaaa_bbbb_xxxx_----_zzzz_]]]] to indicate _aaaa, _bbbb, _xxxx, _yyyy, and _zzzz; and the operators _****, _++++, and
  34.      _????  mean, respectively, any non-negative number of, any positive number
  35.      of, and either zero or one occurrence of, the previous character or
  36.      character class.  Thus, _[[[[_aaaa_----_zzzz_AAAA_----_ZZZZ_]]]]_++++ matches a string of letters.  The
  37.      character _....  is the class of all characters except new-line.  Parentheses
  38.      for grouping and vertical bar for alternation are also supported.  The
  39.      notation _r_{{{{_d_,,,,_e_}}}} in a rule indicates between _d and _e instances of regular
  40.      expression _r.  It has higher precedence than |, but lower than *, ?, +,
  41.      and concatenation.  The character _^^^^ at the beginning of an expression
  42.      permits a successful match only immediately after a new-line, and the
  43.      character _$$$$ at the end of an expression requires a trailing new-line.
  44.      The character _//// in an expression indicates trailing context; only the
  45.      part of the expression up to the slash is returned in _yyyy_yyyy_tttt_eeee_xxxx_tttt, but the
  46.      remainder of the expression must follow in the input stream.  An operator
  47.      character may be used as an ordinary symbol if it is within _"""" symbols or
  48.      preceded by _\\\\.
  49.  
  50.      Three macros are expected:  _iiii_nnnn_pppp_uuuu_tttt to read a character; _uuuu_nnnn_pppp_uuuu_tttt_((((_c_)))) to
  51.      replace a character read; and _oooo_uuuu_tttt_pppp_uuuu_tttt_((((_c_)))) to place an output character.
  52.      They are defined in terms of the standard streams, but you can override
  53.      them.  The program generated is named _yyyy_yyyy_llll_eeee_xxxx, and the lex library contains
  54.      a _mmmm_aaaa_iiii_nnnn that calls it.  The macros _iiii_nnnn_pppp_uuuu_tttt and _oooo_uuuu_tttt_pppp_uuuu_tttt read from and write to
  55.      _ssss_tttt_dddd_iiii_nnnn and _ssss_tttt_dddd_oooo_uuuu_tttt, respectively.
  56.  
  57.      The function _yyyy_yyyy_mmmm_oooo_rrrr_eeee accumulates additional characters into the same
  58.      _yyyy_yyyy_tttt_eeee_xxxx_tttt.  The function _yyyy_yyyy_llll_eeee_ssss_ssss_((((_n_)))) pushes back _yyyy_yyyy_llll_eeee_nnnn_gggg -_n characters into the
  59.      input stream.  (_yyyy_yyyy_llll_eeee_nnnn_gggg is an external _llll_oooo_nnnn_gggg _iiii_nnnn_tttt variable giving the length
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. lllleeeexxxx((((1111))))                                                                  lllleeeexxxx((((1111))))
  71.  
  72.  
  73.  
  74.      in bytes of _yyyy_yyyy_tttt_eeee_xxxx_tttt.)  The function _yyyy_yyyy_wwww_rrrr_aaaa_pppp is called whenever the scanner
  75.      reaches end of file and indicates whether normal wrapup should continue.
  76.      The action _RRRR_EEEE_JJJJ_EEEE_CCCC_TTTT on the right side of the rule causes the match to be
  77.      rejected and the next suitable match executed.  The action _EEEE_CCCC_HHHH_OOOO on the
  78.      right side of the rule is equivalent to _pppp_rrrr_iiii_nnnn_tttt_ffff_((((_""""_%%%%_ssss_""""_,,,, _yyyy_yyyy_tttt_eeee_xxxx_tttt_)))).
  79.  
  80.      Any line beginning with a blank is assumed to contain only C text and is
  81.      copied; if it precedes _%%%%_%%%%, it is copied into the external definition area
  82.      of the _llll_eeee_xxxx_...._yyyy_yyyy_...._cccc file.  All rules should follow a _%%%%_%%%%, as in _yyyy_aaaa_cccc_cccc.  Lines
  83.      preceding _%%%%_%%%% that begin with a non-blank character define the string on
  84.      the left to be the remainder of the line; it can be called out later by
  85.      surrounding it with _{{{{_}}}}.  In this section, C code (and preprocessor
  86.      statements) can also be included between _%%%%_{{{{ and _%%%%_}}}}.  Note that curly
  87.      brackets do not imply parentheses; only string substitution is done.
  88.  
  89.      The external names generated by _llll_eeee_xxxx all begin with the prefix _yyyy_yyyy or _YYYY_YYYY.
  90.  
  91.      The flags must appear before any files.
  92.  
  93.      _----_cccc       Indicates C actions and is the default.
  94.  
  95.      _----_tttt       Causes the _llll_eeee_xxxx_...._yyyy_yyyy_...._cccc program to be written instead to standard
  96.               output.
  97.  
  98.      _----_vvvv       Provides a two-line summary of statistics.
  99.  
  100.      _----_nnnn       Will not print out the _----_vvvv summary.
  101.  
  102.      _----_VVVV       Print out version information on standard error.
  103.  
  104.      _----_QQQQ_[[[[_yyyy_||||_nnnn_]]]]  Print out version information to output file _llll_eeee_xxxx_...._yyyy_yyyy_...._cccc by using
  105.               _----_QQQQ_yyyy.  The _----_QQQQ_nnnn option does not print out version information and
  106.               is the default.
  107.  
  108.      Multiple files are treated as a single file.  If no files are specified,
  109.      standard input is used.
  110.  
  111.      Certain default table sizes are too small for some users.  The table
  112.      sizes for the resulting finite state machine can be set in the
  113.      definitions section:
  114.  
  115.           _%%%%_pppp _n number of positions is _n (default 20000)
  116.  
  117.           _%%%%_nnnn _n number of states is _n (4000)
  118.  
  119.           _%%%%_eeee _n number of parse tree nodes is _n (8000)
  120.  
  121.           _%%%%_aaaa _n number of transitions is _n (16000)
  122.  
  123.           _%%%%_kkkk _n number of packed character classes is _n (20000)
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. lllleeeexxxx((((1111))))                                                                  lllleeeexxxx((((1111))))
  137.  
  138.  
  139.  
  140.           _%%%%_oooo _n size of output array is _n (24000)
  141.  
  142.      The use of one or more of the above automatically implies the _----_vvvv option,
  143.      unless the _----_nnnn option is used.
  144.  
  145. EEEEXXXXAAAAMMMMPPPPLLLLEEEE
  146.              _DDDD       _[[[[_0000_----_9999_]]]]
  147.              _%%%%_{{{{
  148.              _vvvv_oooo_iiii_dddd
  149.              _ssss_kkkk_iiii_pppp_cccc_oooo_mmmm_mmmm_nnnn_tttt_ssss_((((_vvvv_oooo_iiii_dddd_))))
  150.              _{{{{
  151.                      _ffff_oooo_rrrr_((((_;;;;_;;;;_))))
  152.                      _{{{{
  153.                              _wwww_hhhh_iiii_llll_eeee_((((_iiii_nnnn_pppp_uuuu_tttt_((((_))))_!!!!_====_''''_****_''''_))))
  154.                                      _;;;;
  155.                              _iiii_ffff_((((_iiii_nnnn_pppp_uuuu_tttt_((((_))))_====_====_''''_////_''''_))))
  156.                                      _rrrr_eeee_tttt_uuuu_rrrr_nnnn_;;;;
  157.                              _eeee_llll_ssss_eeee
  158.  
  159.                                      _uuuu_nnnn_pppp_uuuu_tttt_((((_yyyy_yyyy_tttt_eeee_xxxx_tttt_[[[[_yyyy_yyyy_llll_eeee_nnnn_gggg_----_1111_]]]]_))))_;;;;
  160.                      _}}}}
  161.              _}}}}
  162.              _%%%%_}}}}
  163.              _%%%%_%%%%
  164.              _iiii_ffff      _pppp_rrrr_iiii_nnnn_tttt_ffff_((((_""""_IIII_FFFF _ssss_tttt_aaaa_tttt_eeee_mmmm_eeee_nnnn_tttt_\\\\_nnnn_""""_))))_;;;;
  165.              _[[[[_aaaa_----_zzzz_]]]]_++++  _pppp_rrrr_iiii_nnnn_tttt_ffff_((((_""""_tttt_aaaa_gggg_,,,, _vvvv_aaaa_llll_uuuu_eeee _%%%%_ssss_\\\\_nnnn_""""_,,,,_yyyy_yyyy_tttt_eeee_xxxx_tttt_))))_;;;;
  166.              _0000_{{{{_DDDD_}}}}_++++   _pppp_rrrr_iiii_nnnn_tttt_ffff_((((_""""_oooo_cccc_tttt_aaaa_llll _nnnn_uuuu_mmmm_bbbb_eeee_rrrr _%%%%_ssss_\\\\_nnnn_""""_,,,,_yyyy_yyyy_tttt_eeee_xxxx_tttt_))))_;;;;
  167.              _{{{{_DDDD_}}}}_++++    _pppp_rrrr_iiii_nnnn_tttt_ffff_((((_""""_dddd_eeee_cccc_iiii_mmmm_aaaa_llll _nnnn_uuuu_mmmm_bbbb_eeee_rrrr _%%%%_ssss_\\\\_nnnn_""""_,,,,_yyyy_yyyy_tttt_eeee_xxxx_tttt_))))_;;;;
  168.              _""""_++++_++++_""""    _pppp_rrrr_iiii_nnnn_tttt_ffff_((((_""""_uuuu_nnnn_aaaa_rrrr_yyyy _oooo_pppp_\\\\_nnnn_""""_))))_;;;;
  169.              _""""_++++_""""     _pppp_rrrr_iiii_nnnn_tttt_ffff_((((_""""_bbbb_iiii_nnnn_aaaa_rrrr_yyyy _oooo_pppp_\\\\_nnnn_""""_))))_;;;;
  170.              _""""_\\\\_nnnn_""""    _;;;;_////_****_nnnn_oooo _aaaa_cccc_tttt_iiii_oooo_nnnn _****_////
  171.              _""""_////_****_""""      _ssss_kkkk_iiii_pppp_cccc_oooo_mmmm_mmmm_nnnn_tttt_ssss_((((_))))_;;;;
  172.              _%%%%_%%%%
  173.  
  174. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  175.      _yyyy_aaaa_cccc_cccc(1)
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.